Industrial controllers are special purpose processing devices used for controlling industrial processes, machines, manufacturing equipment, and other factory automation applications. In accordance with a control program or routine, an industrial controller may measure one or more process variables or inputs representative of the status of a controlled process, and change outputs effecting control of the process. The inputs and outputs may be binary, (e.g., on or off), and/or analog assuming a continuous range of values. The control routine may be executed in a series of execution cycles with batch processing capabilities, and may comprise one or more functional units. Such a control routine may be created in a controller configuration system having tools and interfaces whereby a user may implement a control strategy using programming languages or graphical representations of control functionality, sometimes referred to as function blocks. The control routine may be downloaded from the configuration system into one or more controllers for implementation of the control strategy in controlling a process or machine.
An industrial controller may be customized to a particular process by writing one or more control software routines that may be stored in the controller memory and/or by changing the hardware configuration of the controller to match the control task or strategy. Such control routines may be generated using controller configurations systems or tools, which facilitate translation of a desired control strategy for the process into a control routine executable in a controller. Control routines may be programmed by a user in a source programming language, or in a graphical fashion using visual representations of control functions, sometimes referred to as function blocks. Ladder logic programming is also employed where the inputs and outputs of the system are largely or entirely boolean in nature. Function blocks and ladder logic programming provide programming capabilities to a user unskilled in generating program code, and function block programming is particularly adapted to use in process control applications, where analog functionality is needed to implement a particular control strategy.
A user models a control strategy by placing function blocks in a user interface work surface, and associating the function blocks using graphical connections known as wires, via a graphical user interface. For example, the user may drag and drop graphical representations of the function blocks onto a work surface or work space in a graphical user interface. The associations between various function blocks may then be established by connecting outputs and inputs of the function blocks using wires or other connectors in the interface. Once the user has thus defined the desired control strategy, the configuration system compiles or verifies the graphical representation to produce a control routine, which may then be downloaded to one or more control modules in the control system. The control functions represented by the function blocks are implemented in the verified control routine according to execution ordering which may be determined in the compilation or verification process in the configuration tool.
Although conventional controller configuration tools and systems provide some measure of functionality enabling user to create function block diagrams for use in control systems, various shortcomings exist in such present tools. For instance, many existing configuration tools do not provide for ensuring proper data flow in function block diagrams, instead relying on the user to perform manual function block execution ordering. Such systems do not allow the user to provide for feedback loop identification. In addition, conventional configuration tools provide limited intelligence in interfacing with a user, wherein the user is not made aware of logical or semantic problems in a function block diagram until a compiler or verification error is provided. Accordingly, there is a need for improved controller configuration tools and interfaces therefor, for use in creating function block diagrams.